package com.bbva.gptf.back.servicio.simulacion;

import java.math.BigDecimal;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;

import com.bbva.gptf.back.dominio.SpGeneraOrdenes;
import com.bbva.gptf.dto.bean.InstrumentosSimulacion;
import com.bbva.gptf.dto.bean.TipoNivel;
import com.bbva.gptf.dto.servicio.simulacion.ServicioGeneraOrdenes;
import com.bbva.jee.arq.spring.core.httpService.HttpService;

/**
 * @author iavilalo
 */
@HttpService(serviceName = "servicioGeneraOrdenesHttp")
public class ServicioGeneraOrdenesImpl implements ServicioGeneraOrdenes {

	private final int CONTRATO = 0;
	private final int VALOR_BMV = 1;
	private final int EMISORA = 2;
	private final int SERIE = 3;
	private final int TITULOS_POS = 4;
	private final int TITULOS_OBJ = 5;
	private final int PRECIO = 6;
	private final int TASA = 7;
	private final int VALOR_NOM = 8;
	private final int MONTO = 9;
	private final int MERCADO = 10;

	@Autowired
	private SpGeneraOrdenes spGeneraOrdenes;

	@Override
	public boolean generarOrdenes(final List<InstrumentosSimulacion> listaPosiciones,
			boolean restricciones, BigDecimal cdGestor, String cdUsuarioUmo) {
		Object[][] objetos = new Object[listaPosiciones.size()][11];
		Integer indice = 0;
		for (InstrumentosSimulacion simulacion : listaPosiciones) {
			if (simulacion.getTpNivel() == 3L
					&& simulacion.getImCfMontoOperar().compareTo(BigDecimal.ZERO) == 1) {
				objetos[indice][CONTRATO] = simulacion.getCdContrato();
				objetos[indice][VALOR_BMV] = simulacion.getCdValorBmv();
				objetos[indice][EMISORA] = simulacion.getCdEmisora();
				objetos[indice][SERIE] = simulacion.getCdSerie();
				//objetos[indice][MERCADO] = simulacion.getTpMercado();//
				objetos[indice][MERCADO] = "MD";//
				objetos[indice][TITULOS_POS] = simulacion.getCtCaTitulo();
				objetos[indice][TITULOS_OBJ] = simulacion.getCtCfTitulo();
				objetos[indice][PRECIO] = simulacion.getImPrecioSucio() != null ?
						simulacion.getImPrecioSucio() : simulacion.getImCaPrecio();
				objetos[indice][TASA] = simulacion.getNuCaTasa();
				objetos[indice][VALOR_NOM] = simulacion.getImValorNominal();
				objetos[indice][MONTO] = simulacion.getImCfMontoOperar();
				indice++;
			}
		}
		//return spGeneraOrdenes.execute(objetos, restricciones, cdGestor, cdUsuarioUmo);
		return true;
	}

	public void setSpGeneraOrdenes(final SpGeneraOrdenes spGeneraOrdenes) {
		this.spGeneraOrdenes = spGeneraOrdenes;
	}

}
